//
// Created by Immortal on 4/24/2021.
//

#ifndef RACOON_OPSTR_H
#define RACOON_OPSTR_H
#include <iostream>
#include <vector>
#include <cstring>

class OpStr {
public:


    /* ************************************************************************************

    @name	FindStr

    @brief	查找字符串

    @param	[in]src		源数据
            [in]nSrc    源数据长度
            [in]dst     目标数据(要查询的数据)
            [in]nDst    目标数据长度
            [in]nStart  从指定位置开始查找

    @return 成功返回查询到的索引，失败返回-1

    **************************************************************************************/
    static int FindStr(const char* src, int nSrc, const char* dst, int nDst, int nStart = 0);


    /* ************************************************************************************

    @name	SplitStr

    @brief	分割字符串

    @param	[in]src		源数据
            [in]nSrc    源数据长度
            [in]dst     目标数据(根据该数据分割)
            [in]nDst    目标数据长度
            [out]pvStr  切割后的数据
            [in]bOnce   是否只查询到一次，默认false

    @return 成功返回true，失败返回false

    **************************************************************************************/
    static bool SplitStr(const char* src, int nSrc, const char* dst, int nDst, std::vector<std::string>* pvStr = nullptr, bool bOnce = false);
};


#endif //RACOON_OPSTR_H
